package com.dc.commons.persistence.able;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.MappedSuperclass;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import com.dc.commons.annotation.DcComment;
import com.dc.commons.json.format.DateTimeFormat;
import com.dc.commons.persistence.embeddable.Data;
import com.dc.commons.persistence.embeddable.Member;
import com.dc.commons.status.AuditStatus;

/*******************************************************************************<P>
 * 文件名: AuditAble.java <br>
 * 版本: 1.0<br>
 * 描述: 审核对象接口<br>
 * 版权所有: <br>
 * <P>
 * 创建者: 王建栋 <br>
 * 创建日期: 2015年12月17日 下午5:01:39<br>
 * 修改者: <br>
 * 修改日期: <br>
 * 修改说明: <br>
 ******************************************************************************/
@MappedSuperclass
public interface AuditAble extends IDAble,DataStatusAble{

	@Transient
	public static final String submit="AuditAble.submit";
	@Transient
	public static final String pass="AuditAble.pass";
	@Transient
	public static final String noPass="AuditAble.noPass";
	@Transient
	public static final String callBack="AuditAble.callBack";
	
	 /**
     * 获取 审核人
     * @return auditKey
     */
    @Embedded
    @DcComment("审核人")
    public Member getAuditKey();
    
    /**
     * 设置 审核人
     * @param auditKey
     */
    public void setAuditKey(Member auditKey);
    
    /**
     * 获取 审核时间
     * @return auditDate
     */
    @Column(name="AUDIT_DATE")
    @Temporal(TemporalType.TIMESTAMP)
    @DcComment("审核时间")
    @DateTimeFormat
    public Date getAuditDate();
    /**
     * 设置审核时间
     * @param auditDate
     */
    public void setAuditDate(Date auditDate);
    
    /**
     * 获得审核状态
     * @return auditStatus
     */
    @Column(name="AUDIT_STATUS")
    @Enumerated(EnumType.STRING)
    @DcComment(value="审核状态")
    public AuditStatus getAuditStatus();
    
    /**
     * 设置审核状态
     * @param auditStatus
     */
    public void setAuditStatus(AuditStatus auditStatus);
    
    /**
     * 获得审核意见
     * @return auditNote
     */
    @Embedded
    @DcComment(value="审核意见")
    public Data getAuditNote();
    
    /**
     * 设置 审核意见
     * @param auditNote
     */
    public void setAuditNote(Data auditNote);
}
